home *** CD-ROM | disk | FTP | other *** search
/ Delphi Programmer's Power Pack / Delphi Volume 1.iso / e_to_l / fbuilder / delphi / demos / newvarfm.pas < prev    next >
Pascal/Delphi Source File  |  1996-09-15  |  2KB  |  90 lines

  1. { FormulaBuilder                }
  2. { YGB Software, Inc.            }
  3. { Copyright 1995 Clayton Collie }
  4. { All rights reserved           }
  5.  
  6. {* Form to allow the addition of a variable to an expression *}
  7. {* uses DLL level calls via the expression handle            *}
  8.  
  9. unit Newvarfm;
  10. interface
  11. uses
  12.   FBcalc,
  13.   WinTypes, WinProcs, Classes, Graphics, Forms, Controls, Buttons,
  14.   StdCtrls, ExtCtrls;
  15.  
  16. type
  17.   TNewVariableDlg = class(TForm)
  18.     OKBtn: TBitBtn;
  19.     CancelBtn: TBitBtn;
  20.     VarnameEdit: TEdit;
  21.     RadioGroup1: TRadioGroup;
  22.     Bevel1: TBevel;
  23.     Label1: TLabel;
  24.     procedure OKBtnClick(Sender: TObject);
  25.   private
  26.     { Private declarations }
  27.     fHandle : HEXPR;
  28.   public
  29.     { Public declarations }
  30.   end;
  31.  
  32. var
  33.   NewVariableDlg: TNewVariableDlg;
  34.  
  35.   Function AddNewVariable(handle : HEXPR):boolean;
  36.  
  37. implementation
  38. uses sysutils;
  39. {$R *.DFM}
  40.  
  41.    Function AddNewVariable(handle : HEXPR):boolean;
  42.    var fm : TNewVariableDlg;
  43.    begin
  44.      Application.CreateForm(TNewVariableDlg,fm);
  45.      InitFbuilder; { just to ensure DLL is loaded }
  46.      TRY
  47.        Fm.fHandle := handle;
  48.        result := (fm.Showmodal = mrOk);
  49.      FINALLY
  50.        fm.free;
  51.        FreeFBuilder;  { To match InitFBuilder }
  52.      END;
  53.    end;
  54.  
  55.  
  56. procedure TNewVariableDlg.OKBtnClick(Sender: TObject);
  57. var ident : string[60];
  58.     tmp   : string[60];
  59.     vtype : integer;
  60.     val   : array[0..10] of byte;
  61.     res   : pchar;
  62.  
  63. begin
  64.   ident := VarnameEdit.Text;
  65.   tmp   := ident + #0;
  66.   if not isValidIdent(Ident) then
  67.   begin
  68.     Application.MessageBox('Invalid variable name ',
  69.                            'Definition Error',MB_OK or MB_ICONHAND);
  70.     exit;
  71.   end;
  72.   res := @val;
  73.   if FBGetVarAsString(fHandle,@tmp[1],res,sizeof(val)-1) = EXPR_SUCCESS then
  74.   begin
  75.     Application.MessageBox('The variable already exists ',
  76.                            'Definition Error',MB_OK or MB_ICONHAND);
  77.     exit;
  78.   end;
  79.   res := @tmp[1];
  80.   Case RadioGroup1.ItemIndex of
  81.      0 : FBAddVariable(fhandle,Res, vtInteger ); { vtInteger; }
  82.      1 : FBAddVariable(fhandle,Res, vtFloat );   { vtFloat; }
  83.      2 : FBAddVariable(fHandle,Res, vtBoolean ); { vtBoolean;}
  84.      3 : FbAddVariable(fHandle,Res, vtString );  { vtString; }
  85.      4 : FBAddVariable(fhandle,Res, vtDate );    { vtDate; }
  86.   end;
  87.  end;
  88.  
  89. end.
  90.